!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!     parameter module
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

module parameters

implicit none

public

integer, parameter :: p_sim_standard = 0
integer, parameter :: p_sim_multigrid = 1

integer, parameter :: p_lower = 1, p_upper = 2

integer, parameter :: p_interp_linear = 1
integer, parameter :: p_bc_conduct = 1
integer, parameter :: tag_max_num = 3000
integer, parameter :: tag_start = 1000

! ================================================================
! parameters for diagnostic type
! ================================================================
integer, parameter :: p_tdiag_grid = 0, p_tdiag_raw = 1, p_tdiag_rst = 2


integer, parameter :: p_fd_2order = 1, p_fd_4order = 2


integer, parameter :: p_id_diag = 99

! HYPRE
integer, parameter :: p_solver_smg = 1, &
                      p_solver_pfmg = 2, &
                      p_solver_pcg = 3
integer, parameter :: p_precond_smg = 1, &
                      p_precond_pfmg = 2, &
                      p_precond_ds = 3, &
                      p_precond_none = 99
integer, parameter :: p_bnd_dd = 1, &   ! Dirichlet-Dirichlet boundary condition
                      p_bnd_dn = 2, &   ! Dirichlet-Neumann boundary condition
                      p_bnd_nd = 3, &   ! Neumann-Dirichlet boundary condition
                      p_bnd_nn = 4      ! Neumann-Neumann boundary condition
integer, parameter :: HYPRE_TYPE = 8

integer, parameter :: p_eq_poisson = 1, &
                      p_eq_iter = 2

!multigrid
integer, parameter :: p_solver_cg = 1, &
                      p_solver_gs = 2

end module parameters
